package cn.zhejianglao.shirotemplate.service.user.service;

import cn.zhejianglao.shirotemplate.common.model.UserRoleGetOutDTO;
import cn.zhejianglao.shirotemplate.service.user.model.CreateUserRequest;
import cn.zhejianglao.shirotemplate.service.user.model.LoginRequest;
import cn.zhejianglao.shirotemplate.service.user.model.UserGetOutDTO;

import java.util.List;

/**
 * account service interface
 */
public interface IUserService {

    /**
     * set current account
     *
     * @param userGetOutDTO the current account
     */
    void setCurrentUser(UserGetOutDTO userGetOutDTO);

    /**
     * get the current account info
     *
     * @return current account info
     */
    UserGetOutDTO getCurrentUser();

    /**
     * user log in
     *
     * @param request log in request
     */
    void login(LoginRequest request);

    /**
     * 创建账号
     *
     * @param userVO 账号对象
     * @return 创建结果
     */
    String create(CreateUserRequest userVO);

    /**
     * 获取所有已有的角色
     *
     * @return 角色列表
     */
    List<UserRoleGetOutDTO> getRoles();

    /**
     * 切换角色
     *
     * @param roleId 角色id
     */
    void switchRole(Long roleId);

    /**
     * 重命名
     *
     * @param newName 新名称
     */
    void rename(String newName);

    /**
     * 根据 id 删除用户
     *
     * @param userId 用户id
     */
    void delete(Long userId);
}
